package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.UacVolunteer;
import com.csun.cmny.provider.model.dto.volunteer.VolunteerDto;
import com.csun.cmny.provider.model.dto.volunteer.VolunteerModifyPwdDto;
import com.csun.cmny.provider.model.dto.volunteer.VolunteerQueryDto;
import com.csun.cmny.provider.model.vo.VolunteerInforVo;
import com.csun.cmny.provider.model.vo.VolunteerVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-05-23 17:02
 * @Description:
 */
public interface UacVolunteerService extends IService<UacVolunteer> {

    /**
     * 志愿者添加
     *
     * @param volunteerDto  volunteer dto
     * @param loginAuthDto  login auth dto
     *
     * @return  the int.
     */
    Integer addVolunteer(VolunteerDto volunteerDto, LoginAuthDto loginAuthDto);

    /**
     * 志愿者修改
     *
     * @param volunteerDto  volunteer dto
     * @param loginAuthDto  login auth dto
     *
     * @return the int.
     */
    Integer updateVolunteer(VolunteerDto volunteerDto, LoginAuthDto loginAuthDto);

    /**
     * 志愿者删除
     *
     * @param id    volunteer id
     *
     * @return  the int.
     */
    Integer deleteVolunteerById(Long id);

    /**
     * 志愿者分页查询
     *
     * @param volunteerQueryDto volunteer query dto
     *
     * @return  the page info.
     */
    PageInfo queryVolunteerListWithPage(VolunteerQueryDto volunteerQueryDto);


    /**
     * 获取志愿者列表
     * @param
     * @return
     */
    PageInfo queryVolunteerList(Long groupId);


    /**
     * 获取志愿者信息
     *
     * @param volunteerId 志愿者Id
     *
     * @return 志愿者信息
     */
    VolunteerVo getVolunteerByVolunteerId(Long volunteerId);

    /**
     * 更新志愿者积分
     *
     * @param volunteerId 志愿者Id
     * @param integral    积分
     *
     * @return the int.
     */
    Integer updateVolunteerIntegralByVolunteerId(Long volunteerId, Integer integral);

    /**
     * 根据志愿者Id集合查询志愿者列表
     *
     * @param volunteerIdList volunteer id list
     * @return the list.
     */
    List<VolunteerVo> queryVolunteerListByVolunteerIds(List<Long> volunteerIdList);

    /*
    * 根据userID查询志愿者
    * */
    VolunteerVo getVolunteerByUserId(Long userId);

    /**
     * 修改志愿者密码
     *
     * @param volunteerModifyPwdDto
     * @return
     */
    Integer modifyVolunteerPwd(VolunteerModifyPwdDto volunteerModifyPwdDto, LoginAuthDto loginAuthDto);

    /*
    *  大数据平台查询志愿者
    * */
    Integer selectVolunteerCount(Long groupId);
    /*
     * 大数据平台志愿者服务查询
     * */
    List<VolunteerInforVo> selectVolunteerByNurseHome(VolunteerInforVo vo);
}
